package net.xju3_4.service;

import net.xju3_4.entity.UserEntity;

import java.util.Map;

/**
 * 用户资料服务接口
 * 独立的用户资料管理服务接口
 */
public interface UserProfileService {
    
    /**
     * 获取用户资料
     * @param userId 用户ID
     * @return 用户资料
     */
    UserEntity getUserProfile(String userId);
    
    /**
     * 更新用户资料
     * @param updateData 更新数据
     * @return 是否成功
     */
    boolean updateUserProfile(Map<String, Object> updateData);
    
    /**
     * 修改密码
     * @param userId 用户ID
     * @param oldPassword 原密码
     * @param newPassword 新密码
     * @return 是否成功
     */
    boolean changePassword(String userId, String oldPassword, String newPassword);
    
    /**
     * 更新头像
     * @param userId 用户ID
     * @param avatarUrl 头像URL
     * @return 是否成功
     */
    boolean updateAvatar(String userId, String avatarUrl);
    
    /**
     * 检查资料完整性
     * @param userId 用户ID
     * @return 完整性信息
     */
    Map<String, Object> checkProfileCompleteness(String userId);
    
    /**
     * 获取账户安全信息
     * @param userId 用户ID
     * @return 安全信息
     */
    Map<String, Object> getSecurityInfo(String userId);
    
    /**
     * 验证用户身份
     * @param userId 用户ID
     * @param password 密码
     * @return 是否验证成功
     */
    boolean verifyIdentity(String userId, String password);
    
    /**
     * 检查手机号是否已被使用
     * @param phone 手机号
     * @param excludeUserId 排除的用户ID
     * @return 是否已被使用
     */
    boolean isPhoneExists(String phone, String excludeUserId);
    
    /**
     * 生成资料完整性建议
     * @param userId 用户ID
     * @return 建议列表
     */
    Map<String, Object> getProfileSuggestions(String userId);
}
